# coding = utf-8

from PySide6.QtWidgets import (QWidget,QTextEdit,QVBoxLayout,QMenu,QApplication)
from PySide6.QtCore import Qt,QPoint
import sys

class MyWidget(QWidget):

    def __init__(self):
        """初始化
        """
        super().__init__()
        self.setupUi()

        # 设置文本编辑的上下文菜单策略 为 自定义上下文菜单
        self.textEdit.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)

        self.setEventBind()

    def setupUi(self):
        """设置界面
        """
        # 主布局使用垂直布局
        vbox = QVBoxLayout(self)

        # 创建文本编辑 
        self.textEdit = QTextEdit()

        # 添加控件到部件
        vbox.addWidget(self.textEdit)
    
    def setEventBind(self):
        """设置事件绑定
        """
        # 自定义上下文菜单请求信号 连接 自定义上下文菜单 槽函数
        self.textEdit.customContextMenuRequested.connect(self.showCustomContentMenu)
        
    def showCustomContentMenu(self,pos: QPoint):
        """显示自定义上下文菜单

        :param pos: customContextMenuRequested 传出的 QPoint 位置
        """
        menu = QMenu(self.textEdit)
        menu.addAction("123")
        menu.addAction("321",)
        menu.exec(pos)
    
if __name__ == "__main__":
    app = QApplication(sys.argv)
    myWidget = MyWidget()
    myWidget.show()
    sys.exit(app.exec())